home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / libs / gle / util / surf / missngvx.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-11-29  |  1.6 KB  |  91 lines

  1. #include<math.h>
  2. #include<string.h>
  3. #define false 0
  4. #define true (!false)
  5. menu(){}
  6. extern int netxt;
  7. gle_redraw(){
  8.     fner("Running Surface");
  9.     draw_hidden();
  10.     netxt = 0;
  11. }
  12. find_primcmd(){}
  13. polish(){printf("polish\n"); exit(1); }
  14. polish_eval(){printf("polish_eval\n"); exit(1); }
  15.  
  16. mystrcpy(char **d,char *s)
  17. {
  18.     if (*d!=0) myfree(*d);
  19.     *d = 0;
  20.     *d = (char *) myallocz(strlen(s)+1);
  21.     strcpy(*d,s);
  22. }
  23. gclip(double *x1,double *y1,double *x2,double *y2
  24.         ,double xmin,double ymin,double xmax,double ymax,int *invis)
  25. {
  26.     double dx,dy;
  27.  
  28.     *invis = true;
  29.     if (*x2 > xmax) {
  30.         if (*x1 > xmax) return;
  31.         dx = *x2 - *x1;
  32.         dy = *y2 - *y1;
  33.         if (dx==0) return;
  34.         *y2 = *y1 + dy*(xmax-*x1)/dx;
  35.         *x2 = xmax;
  36.     }
  37.     if (*x1 > xmax) {
  38.         dx = *x1 - *x2;
  39.         dy = *y1 - *y2;
  40.         if (dx==0) return;
  41.         *y1 = *y2 + dy*(xmax-*x2)/dx;
  42.         *x1 = xmax;
  43.     }
  44.     if (*y2 > ymax) {
  45.         if (*y1 > ymax) return;
  46.         dy = *y2 - *y1;
  47.         dx = *x2 - *x1;
  48.         if (dy==0) return;
  49.         *x2 = *x1 + dx*(ymax-*y1)/dy;
  50.         *y2 = ymax;
  51.     }
  52.     if (*y1 > ymax) {
  53.         dx = *x1 - *x2;
  54.         dy = *y1 - *y2;
  55.         if (dy==0) return;
  56.         *x1 = *x2 + dx*(ymax-*y2)/dy;
  57.         *y1 = ymax ;
  58.     }
  59.     if (*x2 < xmin) {
  60.         if (*x1 < xmin) return;
  61.         dx = *x2 - *x1;
  62.         dy = *y2 - *y1;
  63.         if (dx==0) return;
  64.         *y2 = *y1 + dy*(xmin-*x1)/dx;
  65.         *x2 = xmin;
  66.     }
  67.     if (*x1 < xmin) {
  68.         dx = *x1 - *x2 ;
  69.         dy = *y1 - *y2 ;
  70.         if (dx==0) return;
  71.         *y1 = *y2 + dy*(xmin-*x2)/dx;
  72.         *x1 = xmin;
  73.     }
  74.     if (*y2 < ymin) {
  75.         if (*y1 < ymin) return;
  76.         dy = *y2 - *y1;
  77.         dx = *x2 - *x1;
  78.         if (dy==0) return;
  79.         *x2 = *x1 + dx*(ymin-*y1)/dy;
  80.         *y2 = ymin;
  81.     }
  82.     if (*y1 < ymin) {
  83.         dy = *y1 - *y2;
  84.         dx = *x1 - *x2;
  85.         if (dy==0) return;
  86.         *x1 = *x2 + dx*(ymin-*y2)/dy;
  87.         *y1 = ymin;
  88.     }
  89.     *invis = false;
  90. }
  91.